Programming arrays of memory cells tend to suffer from noise which is related to various sources. Several noise sources are related to the programming and/or read signals from nearby memory cells. Other noises sources are caused during the device service life and are related either to physical deterioration of the memory cell or to charge drift due to age, temperature, operational cycles and other reasons.
Memory arrays are tested at the completion of production. The programming tests allow programming settings to be calibrated for each memory cell or, for a representative sampling of memory cells in the memory array, so that low limit performance memory cells are programmed correctly. In this manner a memory cell that exhibits low programming performance, such as having a slow programming duration or that it requires a high programming current and other less than optimum programming settings—is identified as a low limit performance memory cell. The programming settings for the low limit performance worst case memory cell are then applied to all the memory cells in the memory array or a selected subgroup of memory cells selected from the memory array.
The worst case programming settings are usually more severe (e.g. slower) comparing to the programming setting at which a majority of the memory cells in the memory array could be programmed, and thus unnecessarily slows the programming duration for the entire memory array, or dictates a higher programming pulses etc. Further, the programming settings for the worst case memory cell do not account for other factors such as dynamic noise and memory cell degradation over time. The programming settings for the low limit performance memory cell will eventually no longer reflect the actual worst case settings of the worst case memory cell or other memory cells in the memory array as the memory cell performance degrades over time. As a result, even executing the slow programming, higher current settings for the worst case memory cell will result in programming errors and premature failures of memory arrays.